<?php

namespace app\admin\controller\qingdongwms\leads;
use addons\qingdongwms\model\Field;
use addons\qingdongwms\model\File;
use addons\qingdongwms\model\Leads;
use addons\qingdongwms\model\Staff;
use app\admin\controller\qingdongwms\Base;
use addons\qingdongwms\model\Record as RecordModel;
use think\DB;
use think\Exception;


/**
 * 跟进记录列表
 */
class Record extends Base {
    public function _initialize() {
        parent::_initialize();
        $this->model = new RecordModel();
    }


    /**
     * 跟进记录列表
     */
    public function index() {
        $this->request->filter(['strip_tags']);
        $need = input('need','');
        if ($this->request->isAjax()) {
            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
            //0:全部 1：我负责的 2：下属负责的 3：今日待跟进 4:今日已跟进
            $type = input('type',0);
            switch($type){
                case 1:
                    $staff = Staff::info();
                    $wheres['create_staff_id'] =  $staff->id;
                    break;
                case 2:
                    $wheres['create_staff_id'] =  array('in',Staff::getLowerStaffId());
                    break;
                case 3:
                    $start = date('Y-m-d 00:00:00');
                    $end = date('Y-m-d 23:59:59');
                    $record = collection(RecordModel::where(array('relation_type'=>4,'next_time'=>array(array('egt',$start),array('elt',$end))))->field("id,relation_id")->select())->toArray();
                    $relationId = [];
                    foreach($record as $k=>$v){
                        $whereRe['id'] = array('gt',$v['id']);
                        $whereRe['relation_id'] = $v['relation_id'];
                        $recordData = RecordModel::where($whereRe)->count();
                        if($recordData == 0){
                            $relationId[] = $v['id'];
                        }

                    }
                    $wheres['id'] =  array('in',$relationId);
                    $staff = Staff::info();
                    $wheres['create_staff_id'] =  $staff->id;
                    break;
                case 4:
                    $start = date('Y-m-d 00:00:00');
                    $end = date('Y-m-d 23:59:59');
                    $record = collection(RecordModel::where(array('relation_type'=>4,'next_time'=>array(array('egt',$start),array('elt',$end))))->field("id,relation_id")->select())->toArray();
                    $relationId = [];
                    foreach($record as $k=>$v){
                        $whereRe['id'] = array('gt',$v['id']);
                        $whereRe['relation_id'] = $v['relation_id'];
                        $recordData = RecordModel::where($whereRe)->count();
                        if($recordData >=1){
                            $relationId[] = $v['id'];
                        }

                    }
                    $wheres['id'] =  array('in',$relationId);
                    $staff = Staff::info();
                    $wheres['create_staff_id'] =  $staff->id;
                    break;
                default:
                    $wheres['create_staff_id'] =  array('in',Staff::getMyStaffIds());
                    break;

            }
            $wheres['relation_type'] = 4;
            if(isset($need) && $need =='leads'){
                $staff = Staff::info();
                $wheres['create_staff_id'] =  $staff->id;
                $wheres['status'] = 0;
                $wheres['follow_type'] = ['neq', '其它'];
                $wheres['next_time'] = array(array('egt',date('Y-m-d 00:00:00')),array('lt',date('Y-m-d 23:59:59')));
                $infolist = $this->model->where($wheres)->column('relation_id');
                if($infolist){
                    $whereExit['relation_id'] = array('in',$infolist);
                    $whereExit['next_time'] = array('gt',date('Y-m-d 23:59:59'));
                    $recordIds = $this->model->where($whereExit)->column('id');
                    if($recordIds){
                        $wheres['id'] = array('in',$recordIds);
                    }
                }
            }
            $list   = $this->model->where($where)->where($wheres)->with(['staff','leads'])->order($sort, $order)->paginate($limit);
            $row    = $list->items();
            $result = array("total" => $list->total(), "rows" => $row);

            return json($result);
        }

        return $this->view->fetch();
    }


    /**
     * 添加跟进
     */
    public function add($ids = null) {
        $relation_type=input('relation_type',4);
        if ($this->request->isPost()) {
            $params = $this->request->post('row/a');
            // 表单验证
            if (($result = $this->qingdongwmsValidate($params, 'Record', 'create')) !== true) {
                $this->error($result);
            }
            if(!empty($params['files'])){
                $params['files']=File::getId($params['files']);
            }
            $reminds_id = $this->request->post('reminds_id/a');
            $params['reminds_id']='';
            if($reminds_id){
                $params['reminds_id'] = implode(',',$reminds_id);
            }
            Db::startTrans();
            try {
                $result = $this->model::createRecord($params);
                Db::commit();
            } catch (Exception $e) {
                Db::rollback();
                $this->error($e->getMessage());
            }
            if ($result) {
                $this->success('创建跟进记录成功');
            }
            $this->error('创建失败');
        }
        $follow= Field::getField('客户状态');
        $staff=Staff::where([])->column('name','id');
        if($ids){
            $leads=Leads::where(['id'=>$ids])->column('id,name');

        }else{
            $leads=Leads::where(['owner_staff_id'=>['in',Staff::getMyStaffIds()]])->column('id,name');
        }
        $this->assign('ids', $ids);
        $this->assign('relation_type', $relation_type);
        $this->assign('leads', $leads);
        $this->assign('staff', $staff);
        $this->assign('follow', $follow);
        return $this->view->fetch();
    }


}